﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Collections.Generic;

using System.Data.SqlClient;
using HHo_Negocio;
using HHo_Model;
using System.Text;


public partial class negociacion_wfNegociacion : UISeguridad
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Page.GetPostBackEventReference(Page);
        Page.GetPostBackEventReference(this,string.Empty);

        if (!Page.IsPostBack)
        {
            HHo_Negocio.GestorTblParametros oGestParam = new GestorTblParametros();
            ddlArea.DataSource = oGestParam.ListaParametroPorGrupo(6);
            ddlArea.DataTextField = "ParametroValor";
            ddlArea.DataValueField = "ParametroID";
            ddlArea.DataBind();

            txtJornal1.Text = oGestParam.ObtenerValorParamtroPorID(oGestParam.ObtenerParamID(1,"TMPT"));
            txtJornal2.Text = txtJornal1.Text;
            txtJornal3.Text = txtJornal1.Text;

            hidPorcentAjuste.Value = oGestParam.ObtenerValorParamtroPorID(oGestParam.ObtenerParamID(1, "PTNP"));
            lblPTNP.Text = hidPorcentAjuste.Value.ToString();

            //Por default fecha actual para negociar
            txtFecProg.Text = DateTime.Now.ToShortDateString();
        }
        else if (Request.Form["__eventtarget"] == "cambiosRealizados")
        {            
            ShowMessage("Datos Grabados Satisfatoriamente");
            Consultar();
        }
    }

    //protected void dlTrab_ItemDataBound(object sender, DataListItemEventArgs e)
    //{
    //    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    //    {
    //        Repeater repInner = (Repeater)e.Item.FindControl("repTrab");
    //        if(repInner != null)
    //        {                
    //            GestorTrabajos oGestTrabajo = new GestorTrabajos();
    //            List<E_DetalleTrabajo> lstTrab = oGestTrabajo.ConsultarTrabajoPorInforme(Int32.Parse(dlTrab.DataKeys[e.Item.ItemIndex].ToString()));
    //            repInner.DataSource = lstTrab;
    //            repInner.DataBind();
    //            HiddenField hidNumTrab = (HiddenField)e.Item.FindControl("hid_NumTrab");
    //            HiddenField hidCSVMatAvion = (HiddenField)e.Item.FindControl("hid_MatriculasCSV");
    //            hidNumTrab.Value = lstTrab.Count.ToString();
    //            //hidCSVMatAvion += hidCSVMatAvion + "|" + e. ;
    //        }
    //    }
    //}


    public string FormatHora24HH(object oShortDate)
    {
        string returnValue = "";
        DateTime dt;
        if (oShortDate != null)
        {
            dt = Convert.ToDateTime(oShortDate);
            returnValue = dt.Hour + ":" + dt.Minute;
        }
        return returnValue;
        //Convert.ToDateTime(Eval("HorasTAT")).ToShortTimeString();
    }

    public string BlankInvalidDate(object oDate)
    {
        string returnValue = "";
        DateTime dt;
        if (oDate != null)
        {
            dt = (DateTime)oDate;
            if (dt > Convert.ToDateTime("01/01/2009"))
                returnValue = dt.ToString("dd/MM/yyyy HH:mm");
        }
        return returnValue;
    }

    public string checkString( object obj1, object obj2)
    {
        if (obj1 == null)
        {
            {
                if (obj2 == null)
                    return "";
                else
                    return obj2.ToString();
            }
        }
        else
            return obj1.ToString();
        
    }

    public string suprBlancChars(object obj1)
    {
        string str = obj1.ToString();
        if (obj1 != null)
            return str.Trim();
        else
            return "Error";
    }

    public string suprBlancChars(object obj1, object strSufijo)
    {
        string str = obj1.ToString();
        string str2 = strSufijo.ToString();

        return str.Trim() +str2;
    }

    protected void imgGrabar_Click(object sender, ImageClickEventArgs e)
    {
        GestorTrabajos oGesTrab = new GestorTrabajos();
        E_Negociacion objNegociacion;

        objNegociacion = new E_Negociacion();
        objNegociacion.AreaId = Int32.Parse(ddlArea.SelectedValue);
        objNegociacion.FecNeg = DateTime.Parse(txtFecProg.Text);
        objNegociacion.NumPersHab = Int32.Parse(txtNPers1.Text);
        objNegociacion.NumPersNHab = Int32.Parse(txtNPers2.Text);
        objNegociacion.NumPersJr = Int32.Parse(txtNPers3.Text);
        objNegociacion.DecTiempoHab = Decimal.Parse(txtJornal1.Text);
        objNegociacion.DecTiempoNHab = Decimal.Parse(txtJornal2.Text);
        objNegociacion.DecTiempoJr = Decimal.Parse(txtJornal3.Text);

        oGesTrab.RegistrarNegociacion(objNegociacion);
        
        //TODO - ENVIAR POR LOTES LA NEGOCIACION
        //NOTA - EL ARRAY VIENE ORGANIZADO DE TAL MANERA QUE LA PRIMERA OCURRENCIA DE "_" INDICA QUE YA NO HAY MAS TRABAJOS
        string Cadena8000, strBurbuja1, strBurbuja2, strBurbuja3, strBurbuja4, strBurbuja5;
        string[] ArrayTrabajos = hid_DataDetTrab.Value.ToString().Split(',');
        int i=0, longDatos, contCaract=0;
        Cadena8000 = "";
        longDatos = hid_DataDetTrab.Value.ToString().Length;
        try
        {
            do
            {
                strBurbuja1 = ArrayTrabajos[i];
                strBurbuja2 = ArrayTrabajos[i + 1];
                strBurbuja3 = ArrayTrabajos[i + 2];
                strBurbuja4 = ArrayTrabajos[i + 3];
                strBurbuja5 = ArrayTrabajos[i + 4];

                contCaract = Cadena8000.Length + strBurbuja1.Length + strBurbuja2.Length + strBurbuja3.Length + strBurbuja4.Length +
                    strBurbuja5.Length + 5; //5 comas
                if ((contCaract > 8000) || (strBurbuja1 == "_"))
                {
                    //grabar y poner en limpio
                    oGesTrab.ActualizarInformeTrabajos(Cadena8000);
                    Cadena8000 = "";
                }

                Cadena8000 += strBurbuja1 + "," + strBurbuja2 + "," + strBurbuja3 + "," + strBurbuja4 + "," +
                    strBurbuja5 + ",";

                i += 5;
            }
            while ((strBurbuja1 != "_") || (i >= longDatos));

            ShowMessage("Datos Grabados exitosamente");
        }
        catch (Exception ex)
        {
            ShowMessage("ERROR: No se ha podido grabar la negociación correctamente. \nMensaje de Error:\n" + ex.Message);
        }
    }





    private void LimpiarControles()
    {
txtNPers1.Text = "";
txtNPers2.Text = "";
txtNPers3.Text = "";
//txtHraHab.Text = "";
//txtHraNHab.Text = "";
//txtHraJr.Text = "";
lblTot1.Text = "";
lblTot2.Text="";
lblTot3.Text = "";
//lblTotHH.Text = "";
lblAjust1.Text = "";
lblAjust2.Text = "";
lblAjust3.Text = "";
//lblTotAjust.Text = "";
lblPrg1.Text = "";
lblPrg2.Text = "";
lblPrg3.Text = "";
//lblTotHHPrg.Text = "";

        //dlTrab.DataSource = null;
        //dlTrab.DataBind();
        lblDisplayMenu.Text = "";
hid_DataDetTrab.Value = "";

    }

    private void Consultar()
    {
        divCalculador.Style.Remove("display");
        divCalculador.Style.Add("display", "none");
        divTrab.Style.Remove("display");
        divTrab.Style.Add("display", "none");
        bool isPrimerTrabajo = false;

        StringBuilder strb;

        if ((txtFecProg.Text.Length == 10))
        {
            if (Convert.ToDateTime(txtFecProg.Text).Date >= DateTime.Now.Date)
            {
                LimpiarControles();
                GestorTrabajos oGesTrab = new GestorTrabajos();

                List<E_Negociacion> lstNegociacion;
                //E_Negociacion objNegociacion

                List<E_Trabajo> oTrabajo = oGesTrab.ConsultarInformeTrabajo(Convert.ToDateTime(txtFecProg.Text), Int32.Parse(ddlArea.SelectedValue));
                if (oTrabajo.Count > 0)
                {
                    lstNegociacion = oGesTrab.ConsultaNegociacion(Int32.Parse(ddlArea.SelectedValue), txtFecProg.Text, '0');
                    if (lstNegociacion.Count > 0)
                    {
                        foreach (E_Negociacion objNegociacion in lstNegociacion)
                        {
                            txtNPers1.Text = objNegociacion.NumPersHab.ToString();
                            txtNPers2.Text = objNegociacion.NumPersNHab.ToString();
                            txtNPers3.Text = objNegociacion.NumPersJr.ToString();

                            txtJornal1.Text = objNegociacion.DecTiempoHab.ToString();
                            txtJornal2.Text = objNegociacion.DecTiempoNHab.ToString();
                            txtJornal3.Text = objNegociacion.DecTiempoJr.ToString();
                        }
                    }
                    else
                    {
                        ShowMessage("aviso","Iniciando Nueva Negociación");
                    }

                    lblDisplayMenu.Text = "<div id=\"header\"><ul>";
                    foreach (E_Trabajo ob in oTrabajo)
                    {
                        lblDisplayMenu.Text += "<li> <a href=\"#view\" onclick=\"javascript:makeActive(this); return viewLayer('" + ob.MatriculaAvion.Trim() + "');\">" + ob.MatriculaAvion.Trim() + "</a></li>";
                    }
                    lblDisplayMenu.Text += "</ul></div>";

                    //crear los trabajos
                    strb = new StringBuilder();
                    foreach (E_Trabajo ob in oTrabajo)
                    {
                        if (!isPrimerTrabajo)
                        {
                            strb.Append("<div id='" + suprBlancChars(ob.MatriculaAvion) + "'  style=\"display:block\">");
                            isPrimerTrabajo = true;
                        }
                        else
                        {
                            strb.Append("<div id='" + suprBlancChars(ob.MatriculaAvion) + "'  style=\"display:none\">");
                        }
                        strb.Append("<TABLE cellSpacing=0 cellPadding=0 width=\"50%\" border=1><TBODY><TR><TD><IMG height=12 src=\"../styles/a-main/lightblueBorder_topleft.gif\" width=13></TD>");                        
                        strb.Append("<TD width=3 background=\"../styles/a-main/lightblueBorder_top.gif\" height=12></TD><TD><IMG height=12 src=\"../styles/a-main/lightblueBorder_topright.gif\" width=13></TD>");
                        strb.Append("</TR><TR><TD width=13 background=\"../styles/a-main/lightblueBorder_left.gif\" height=3></TD><TD bgColor=#ebeffa>");

                        strb.Append("<table border=\"0\"><thead><tr><th colspan=\"4\">Resumen de negociación</th><th>&nbsp;</th></tr></thead><tfoot><tr><td colspan=\"4\"><em>Programar mas trabajos</em></td>");
        	            strb.Append("<td><a href='#' onclick='javascript:window.open(\"../trabajo/wfPrgTrabDet.aspx?ctrl=ctrl2&wv="+ob.Id+"\",\"trab\",\"width=800,height=600,status=yes\")'><img src=\"../styles/a-main/bot_lapiz_act.gif\" border=\"0\" /></a></td>");
                        strb.Append("</tr></tfoot>");
                        strb.Append("<tbody><tr><td class=\"RSText\">Llegada:</td><td class=\"inLabelNegocia\">"+BlankInvalidDate(ob.HoraLlegada)+"</td><td></td><td></td><td></td></tr><tr><td>Salida:</td>");
                        strb.Append("<td class=\"inLabelNegocia\">"+BlankInvalidDate(ob.HoraSalida)+"</td><td></td><td></td><td></td></tr><tr><td>TAT:</td><td class=\"inLabelNegocia\">" + FormatHora24HH(ob.HorasTAT) + "</td><td></td><td></td><td></td></tr>");
                        strb.Append("<tr><td>TEM:</td><td class=\"inLabelNegocia\">" + FormatHora24HH(ob.HorasTEM) + "</td><td></td><td></td><td></td></tr><tr><td>HH:</td><td class=\"inLabelNegocia\">0.00</td><td></td><td></td><td></td></tr></tbody></table>");
                        
                        strb.Append("</TD><TD width=13 background=\"../styles/a-main/lightblueBorder_right.gif\" height=3></TD></TR><TR><TD><IMG height=12 src=\"../styles/a-main/lightblueBorder_bottomleft.gif\" width=13></TD><TD width=3 background=\"../styles/a-main/lightblueBorder_bottom.gif\" height=12></TD><TD><IMG height=12 src=\"../styles/a-main/lightblueBorder_bottomright.gif\" width=13></TD></TR></TBODY></TABLE>");
                        
                        strb.Append(ObtenerActividadesProgramadas(ob.Id));

                        strb.Append("</div>");                        
                    }
                    lblDisplayTrabajos.Text = strb.ToString();

                    divCalculador.Style.Remove("display");
                    divCalculador.Style.Add("display", "block");
                    divTrab.Style.Remove("display");
                    divTrab.Style.Add("display", "block");

                }
                else
                {
                    ShowMessage("ERROR: No se puede iniciar la negociación por que no se registra ninguna programación activa, por favor verifique que exista programación para el día ingresado");
                }
            }
            else
            {
                ShowMessage("ERROR: No se puede negociar para fechas anteriores");
            }
        }
        else
        {
            ShowMessage("ERROR: No se ha ingresado la fecha de programación");
        }
    }

    private string ObtenerActividadesProgramadas(int IDTrab)
    {
        GestorTrabajos oGestTrabajo = new GestorTrabajos();
        List<E_DetalleTrabajo> lstTrab = oGestTrabajo.ConsultarTrabajoPorInforme(IDTrab);
        StringBuilder strb = new StringBuilder();
        int NumFilas=0, OrdenColumna=0;
        //repInner.DataSource = lstTrab;
        //repInner.DataBind();        
        if (lstTrab != null)
        {
            if (lstTrab.Count > 0)
            {
                strb.Append("<table border=\"1\"><thead><tr><th>Trabajos</th><th>AvyMot</th><th>Avionico</th><th>Estruct</th><th>Total</th></tr></thead>");
                strb.Append("<tfoot><tr><td>Total</td><td><span id='AvyMot_" + NumFilas.ToString() + "'></span></td><td><span id='Avionico_" + NumFilas.ToString() + "'></span></td><td><span id='Estruct_" + NumFilas.ToString() + "'></span></td></tr></tfoot>");
                strb.Append("<tbody>");
                foreach (E_DetalleTrabajo eDT in lstTrab)
                {
                    NumFilas +=1;
                    OrdenColumna = 2;
                    strb.Append("<tr><td>" + checkString(eDT.CompDesc, eDT.TipTraDesc) + "<br/>" + eDT.DescTrabajo + "</td>");
                    strb.Append("<td><input type='text' id='txt_" + NumFilas.ToString() + "_" + OrdenColumna.ToString() + "' /></td>");
                    OrdenColumna +=1;
                    strb.Append("<td><input type='text' id='txt_" + NumFilas.ToString() + "_" + OrdenColumna.ToString() + "' /></td>");
                    OrdenColumna += 1;
                    strb.Append("<td><input type='text' id='txt_" + NumFilas.ToString() + "_" + OrdenColumna.ToString() + "' /></td>");
                    OrdenColumna += 1;
                    strb.Append("<td><span id='lbl_" + NumFilas.ToString() + "_" + OrdenColumna.ToString() + "' /></td>");
                    strb.Append("</tr>");
                }
                strb.Append("</tbody></table>");
            }
            else
            {
                strb.Append("<strong>No existe trabajos</strong>");
            }
        }
        return strb.ToString();
    }

    protected void imgConsultaPrg_Click(object sender, ImageClickEventArgs e)
    {
        Consultar();
    }
}

/* controles


txtHab
txtNHab
txtJr
txtHraHab
txtHraNHab
txtHraJr
lblTotHab
lblTotNHab
lblTotJr
lblTotHH
lblAjustHab
lblAjustNHab
lblAjustJr
lblTotAjust
lblPrgHab
lblPrgNHab
lblPrgJr
lblTotHHPrg

dlTrab

hid_DataDetTrab
lblDisplayMenu
ddlArea
txtFecProg
*/